<?php
// +----------------------------------------------------------------------
// | 07FLYSAAS [基于ThinkPHP5.0开发]
// +----------------------------------------------------------------------
// | Copyright (c) 2025-2035 http://www.07fly.xyz
// +----------------------------------------------------------------------
// | Professional because of focus  Persevering because of happiness
// +----------------------------------------------------------------------
// | Author: 开发人生 <goodkfrs@qq.com>
// +----------------------------------------------------------------------

namespace app\plat\controller;

use app\common\controller\ControllerBase;
use think\Hook;
use think\Loader;

/**
 * 后台基类控制器
 */
class PlatControllerBase extends ControllerBase
{
    /**
     * 构造方法
     */
    public function __construct()
    {
        // 执行父类构造方法
        parent::__construct();

        // 初始化后台模块常量
        $this->initPlatConst();

        // 后台控制器钩子
        Hook::listen('hook_controller_plat_base', $this->request);

    }

    /**
     * 初始化后台模块常量
     */
    final private function initPlatConst()
    {

        defined('TEN_TENANT_NAME') or define('TEN_TENANT_NAME', 'ten_tenant_id');

        // 会员ID
        defined('TEN_USER_ID') or define('TEN_USER_ID', is_ten_login());

        //组织ID
        defined('TEN_TENANT_ID') or define('TEN_TENANT_ID', is_tenant_login());

        // 是否为超级管理员
        defined('IS_TENANT_ROOT') or define('IS_TENANT_ROOT', is_tenant_root());

        // 数据删除标记
        defined('DATA_DELETE_NAME') or define('DATA_DELETE_NAME', 'is_delete');

    }

    /**
     * 获取逻辑层实例
     */
    public function __get($name)
    {
        !str_prefix($name, LAYER_LOGIC_NAME) && exception('逻辑层引用需前缀:' . LAYER_LOGIC_NAME);
        $model = sr($name, LAYER_LOGIC_NAME);

        // 直接加载模型,当找不到模型时,加载平台plat默认模型
        return Loader::model($model, LAYER_LOGIC_NAME, false, 'plat');//直接加载模型
        //return model(sr($name, LAYER_LOGIC_NAME), LAYER_LOGIC_NAME);
    }
}